package czy.demo.myfirstapp;

import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

/* 主活动类,打开APP即显示 */
public class MainActivity extends AppCompatActivity {

    /* 加载JNI本地库 */
    static {
        System.loadLibrary("native-lib");
    }

    /**
     * 活动创建的生命周期方法
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        /* 父类方法,做了一些设置 */
        super.onCreate(savedInstanceState);

        /* 设置活动布局 */
        setContentView(R.layout.activity_main);

        /* 获取顶部工具条 */
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

        /* 支持动作工具条 */
        setSupportActionBar(toolbar);

        /* 获取浮动动作按钮 */
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

        /* 浮动动作按钮的监听器 */
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "呵呵,点我干嘛", Snackbar.LENGTH_LONG).setAction("Action", null).show();
            }
        });

        /* 获取Fragment中的文本框,设置内容为JNI方法返回的字符串 */
        TextView tv = (TextView) findViewById(R.id.sample_text);
        tv.setText(stringFromJNI());
    }

    /* 活动进入后台时会调用 */
    @Override
    protected void onStop() {
        Log.d("main","主活动停止");
        super.onStop();
    }

    /* 活动销毁方法,APP关闭时调用 */
    @Override
    protected void onDestroy() {
        Log.d("main","主活动销毁");
        super.onDestroy();
    }

    /**
     * 创建选项菜单,菜单现实在顶部标题栏的右边,不属于布局的一部分
     * @param menu:菜单对象
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        /* 设置菜单布局 */
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    /**
     * 菜单项被选中的方法
     * @param item:被选中菜单项
     * @return
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        /* 后台运行动作,活动进入后台,会调用on */
        if (id == R.id.action_back) {

            Toast.makeText(this,"程序进入后台运行",Toast.LENGTH_LONG).show();
            Log.d("main","程序进入后台运行");
            moveTaskToBack(true);
            return true;
        }

        /* 退出动作 */
        if (id == R.id.action_exit) {
            Log.d("main","程序即将退出");
            System.exit(0);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    /* 本地方法,进行JNI调用 */
    public native String stringFromJNI();
}
